package com.jeesite.modules.jydq.service;

import java.util.*;
import java.util.stream.Collectors;

import com.jeesite.common.lang.DateUtils;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.modules.jydq.dao.JydqPlatformDao;
import com.jeesite.modules.jydq.entity.JydqPlatform;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jeesite.common.entity.Page;
import com.jeesite.common.service.CrudService;
import com.jeesite.modules.jydq.entity.JydqProductPrice;
import com.jeesite.modules.jydq.dao.JydqProductPriceDao;

/**
 * 商品价格表Service
 * @author dong
 * @version 2025-03-20
 */
@Service
public class JydqProductPriceService extends CrudService<JydqProductPriceDao, JydqProductPrice> {

	@Autowired
	private JydqPlatformDao jydqPlatformDao;
	
	/**
	 * 获取单条数据
	 * @param jydqProductPrice
	 * @return
	 */
	@Override
	public JydqProductPrice get(JydqProductPrice jydqProductPrice) {
		return super.get(jydqProductPrice);
	}
	
	/**
	 * 查询分页数据
	 * @param jydqProductPrice 查询条件
	 * @param jydqProductPrice page 分页对象
	 * @return
	 */
	@Override
	public Page<JydqProductPrice> findPage(JydqProductPrice jydqProductPrice) {
		return super.findPage(jydqProductPrice);
	}
	
	/**
	 * 查询列表数据
	 * @param jydqProductPrice
	 * @return
	 */
	@Override
	public List<JydqProductPrice> findList(JydqProductPrice jydqProductPrice) {
		return super.findList(jydqProductPrice);
	}
	
	/**
	 * 保存数据（插入或更新）
	 * @param jydqProductPrice
	 */
	@Override
	@Transactional
	public void save(JydqProductPrice jydqProductPrice) {
		super.save(jydqProductPrice);
	}
	
	/**
	 * 更新状态
	 * @param jydqProductPrice
	 */
	@Override
	@Transactional
	public void updateStatus(JydqProductPrice jydqProductPrice) {
		super.updateStatus(jydqProductPrice);
	}
	
	/**
	 * 删除数据
	 * @param jydqProductPrice
	 */
	@Override
	@Transactional
	public void delete(JydqProductPrice jydqProductPrice) {
		super.delete(jydqProductPrice);
	}

	public Map<String, List<JydqProductPrice>> findStatistics(String productId) {
		List<JydqProductPrice> list = new ArrayList<>();
		for (JydqPlatform jydqPlatform : jydqPlatformDao.findList(new JydqPlatform())) {
			List<JydqProductPrice> statistics = dao.findStatistics(productId, jydqPlatform.getId(), DateUtils.getDay());
			Collections.reverse(statistics);
			list.addAll(statistics);
		}
		Map<String, List<JydqProductPrice>> collect = list.stream().filter(a -> StringUtils.isNotEmpty(a.getId())).collect(Collectors.groupingBy(JydqProductPrice::getPlatformName));
		return collect;
	}
}